package cn.myframe.utils.core;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import com.baomidou.mybatisplus.mapper.BaseMapper;

/**
 * 基础Dao(还需在XML文件里，有对应的SQL语句)
 * 
 * @author  ynz
 * @email   ynz@myframe.cn
 * @version 创建时间：2017年11月21日 下午1:28:59
 * @param <T>
 */
public interface BaseDao<T> extends BaseMapper<T>{

	/**
	 * 根据条件集合map查找对象集合
	 * @param map
	 * @return
	 */
	List<T> queryList(Map<String, Object> map);
	/**
	 * 根据条件集合map查找对象集合
	 * @param rowBounds
	 * @param map
	 * @return
	 */
	List<T> queryList(RowBounds rowBounds,Map<String, Object> map);

	/**
	 * 根据主键查找对象
	 * @param id
	 * @return
	 */
	T queryObject(Serializable id);
	
	int updateStatus(@Param("ids")Long[] ids,@Param("status") Serializable status);
	
	
	int checkExist(@Param("id")Serializable id,@Param("name")String name,@Param("columnName")String columnName);
	int checkExist(@Param("id")Serializable id,@Param("name")String name);
	void save(T t);
	void save(Map<String, Object> map);
	int deleteBatch(Object[] id);
	int queryTotal(Map<String, Object> map);
	
	int update(T t);
	
	int update(Map<String, Object> map);
	int delete(Object id);
	
	int delete(Map<String, Object> map);
}
